#!/bin/sh
# Broadband Forum IEEE 1905.1/1a stack
# 
# Copyright (c) 2017, Broadband Forum
# 
# Redistribution and use in source and binary forms, with or without
# modification, are permitted provided that the following conditions are
# met:
# 
# 1. Redistributions of source code must retain the above copyright
#    notice, this list of conditions and the following disclaimer.
# 
# 2. Redistributions in binary form must reproduce the above copyright
#    notice, this list of conditions and the following disclaimer in the
#    documentation and/or other materials provided with the distribution.
# 
# Subject to the terms and conditions of this license, each copyright
# holder and contributor hereby grants to those receiving rights under
# this license a perpetual, worldwide, non-exclusive, no-charge,
# royalty-free, irrevocable (except for failure to satisfy the
# conditions of this license) patent license to make, have made, use,
# offer to sell, sell, import, and otherwise transfer this software,
# where such license applies only to those patent claims, already
# acquired or hereafter acquired, licensable by such copyright holder or
# contributor that are necessarily infringed by:
# 
# (a) their Contribution(s) (the licensed copyrights of copyright holders
#     and non-copyrightable additions of contributors, in source or binary
#     form) alone; or
# 
# (b) combination of their Contribution(s) with the work of authorship to
#     which such Contribution(s) was added by such copyright holder or
#     contributor, if, at the time the Contribution is added, such addition
#     causes such combination to be necessarily infringed. The patent
#     license shall not apply to any other combinations which include the
#     Contribution.
# 
# Except as expressly stated above, no rights or licenses from any
# copyright holder or contributor is granted under this license, whether
# expressly, by implication, estoppel or otherwise.
# 
# DISCLAIMER
# 
# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
# IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
# TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
# PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
# HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
# INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
# BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
# OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
# ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR
# TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE
# USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH
# DAMAGE.

##############################################################################
#
# Description: This script is in charge of modifying the default behavior of
#              the WPS hardware button in a Linksys 1900 AC device, running
#              OpenWRT.
#
#              This script must be copied in the /etc/rc.button directory.
#
#              The WPS button will be reconfigured to execute two actions:
#
#                1) If the button is pressed less than 1 second, it will
#                   toggle the WIFI 'radio 1' to ON or OFF, depending of its
#                   previous state.
#                   This is useful to switch ON or OFF the WIFI without
#                   entering in the Web configuration page.
#
#                2) If the button is pressed more than 3 seconds, it will
#                   start the 1905 Push Button procedure.
#                   Depending on the configuration, this procedure will secure
#                   all device interfaces, and clone the WIFI configuration 
#                   from another device.
#                   For more information about the Push Button procedure,
#                   please read the README file provided with the 1905 stack
#                   implementation.
#
###############################################################################

[ "${ACTION}" = "released" ] || exit 0

. /lib/functions.sh

logger "$BUTTON pressed for $SEEN seconds..."

if [ "$SEEN" -lt 1 ]
then
  device="radio1"
  case $(uci get wireless.$device.txpower) in
   10)
        #wifi down $device
        #uci set wireless.$device.disabled=1
        uci set wireless.$device.txpower=0
        wifi
        logger "Wifi $device disabled"
    ;;
    0)
       # uci set wireless.$device.disabled=0
       # wifi up $device
        uci set wireless.$device.txpower=10 
        wifi 
        logger "Wifi $device enabled"
    ;;
  esac
elif [ "$SEEN" -gt 3 ]
then
    touch /tmp/virtual_push_button
    logger "Starting 1905 PUSH BUTTON procedure"
fi

return 0

